The use of the client-server distributed computing model in local area networks and enterprise-wide systems has become ubiquitous in business, academic, and personal computing environments. With increasing frequency, fixed function display terminals have been replaced by desktop and laptop computers capable of executing software programs independently and asynchronously from the centralized mainframe or enterprise server processor.
As the number of desktop and laptop computers in a local (or enterprise-wide) network increases, the complexity of maintaining the software configuration in each computer increases. Software developers frequently distribute updated versions or releases of their software products, referred to as “updates” in this document, to correct software errors or to enhance functionality, compatibility, and portability. Of course, software developers also distribute new software products designed to improve performance, typically with an increase in the complexity of installing and configuring such new software products.
There are various known techniques for a server to provide a client with a code update or a user with new data. In one technique, clients register with the server for updates to a particular program and users register with the server for updates or new data. Whenever the server obtains a new update for that program or new data of the specified type, the server automatically sends the code update or new data of the specified type to every client/user on the list. Unfortunately, some users may not wish to obtain a particular update or particular new data of the specified type because of cost, download time, or other reason. Alternately, a user can periodically request all code updates or new data of specified types and the server will respond accordingly. Unfortunately again, the user may not need every code update or data of the specified type but, nevertheless, endures the cost and download time. In general, because of the large number and complexity of software applications on a user's system, and the large number and complexity of the corresponding updates for that system, it is very difficult for users to know what updates are appropriate for them. Likewise, there is so much new data generated every day that it is difficult to know what new data is appropriate for particular users.
Thus, network operators have been faced with the challenge of balancing their desire to provide their clients with the most current software updates and products against their requirement of minimizing disruptions to the clients. Software configuration management tools have been developed to assist network operators in this endeavor.
U.S. Pat. No. 5,752,042 issued to Cole et al. discloses a server computer and a method performed by a server computer for selecting code updates to download to a client computer. The server computer identifies code updates which are consistent with basic system characteristics of the client computer. Then, the server computer sends to the client a “recognizer” program which executes in the client computer to determine if the client computer has a version of code that is not current. The server may then generate a list of code updates based upon the result of executing the recognizer program. A user at the client computer end can select from the list. Based on the selections made by the user, the server computer sends addresses of the selected code updates to the client computer. The client computer may then download the selected updates from a server computer.
U.S. Pat. No. 5,581,764 issued to Fitzgerald et al. discloses an automated method of managing changes in a distributed computing environment. The resource needs of individual distributed computers are determined based upon a Should Have (SH) list schema. The SH list schema is used to produce SH lists for individual distributed computers. Individual Already Have (AH) lists may be stored or produced at configuration time for individual distributed computers. A differencing process is used to locate differences between SH lists and AH lists. The differences between SH lists and AH lists for the individual distributed computers are used to determine what items must be updated or modified in order to update individual desktops.
In prior art configuration management systems, information describing the software configuration attributes of each client processor was provided to a central server processor. The central server processor would determine which updates and new products to provide to each client, based on the software configuration of each client.
There remains a need, therefore, for a more flexible and robust software and hardware configuration management system.